#!/usr/bin/env python3
"""
macOS平台打包脚本
使用 pyinstaller 将 Telegram 群发软件打包成可执行文件
"""

import os
import sys
import subprocess
import shutil

def check_pyinstaller():
    """检查是否安装了 pyinstaller"""
    try:
        import PyInstaller
        print("✓ PyInstaller 已安装")
        return True
    except ImportError:
        print("❌ PyInstaller 未安装，正在安装...")
        try:
            subprocess.check_call([sys.executable, "-m", "pip", "install", "pyinstaller"])
            print("✓ PyInstaller 安装成功")
            return True
        except subprocess.CalledProcessError:
            print("❌ PyInstaller 安装失败")
            return False

def build_macos():
    """构建 macOS 可执行文件"""
    print("开始构建 macOS 可执行文件...")
    
    # 构建命令
    cmd = [
        "pyinstaller",
        "--onefile",                    # 打包成单个文件
        "--windowed",                   # 无控制台窗口
        "--name=Telegram群发软件",       # 可执行文件名称
        "--add-data=telegram_config.json:." if os.path.exists("telegram_config.json") else "",
        "--hidden-import=tkinter",
        "--hidden-import=tkinter.ttk",
        "--hidden-import=tkinter.messagebox",
        "--hidden-import=tkinter.filedialog",
        "--hidden-import=tkinter.scrolledtext",
        "--hidden-import=tkinter.simpledialog",
        "--hidden-import=telethon",
        "--hidden-import=asyncio",
        "--hidden-import=threading",
        "--hidden-import=queue",
        "--hidden-import=json",
        "--hidden-import=datetime",
        "--hidden-import=os",
        "--hidden-import=sys",
        "telegram_mass_sender.py"
    ]
    
    # 移除空字符串
    cmd = [item for item in cmd if item]
    
    try:
        # 执行构建
        subprocess.check_call(cmd)
        print("✓ macOS 构建成功！")
        
        # 检查生成的文件
        dist_dir = "dist"
        if os.path.exists(dist_dir):
            files = os.listdir(dist_dir)
            for file in files:
                if file.endswith(".app") or file == "Telegram群发软件":
                    print(f"✓ 生成文件: {os.path.join(dist_dir, file)}")
        
        # 创建说明文件
        create_readme_macos()
        
    except subprocess.CalledProcessError as e:
        print(f"❌ 构建失败: {e}")
        return False
    
    return True

def create_readme_macos():
    """创建 macOS 使用说明"""
    readme_content = """# Telegram 群发软件 - macOS 版本

## 使用说明

### 首次使用
1. 双击运行 `Telegram群发软件` 可执行文件
2. 首次运行会弹出 API 配置窗口
3. 填写您的 Telegram API 配置信息：
   - API ID: 从 https://my.telegram.org 获取
   - API Hash: 从 https://my.telegram.org 获取
4. 点击"确定"保存配置

### 功能说明
- 连接 Telegram 账号
- 获取联系人和群组
- 批量发送消息
- 导出操作日志
- 右键菜单管理

### 注意事项
- 首次使用需要输入 API 配置
- 配置会保存在 `telegram_config.json` 文件中
- 请遵守 Telegram 使用条款，避免账号被封

### 系统要求
- macOS 10.14 或更高版本
- 网络连接

### 技术支持
如有问题，请查看程序日志或联系技术支持。
"""
    
    with open("macOS使用说明.txt", "w", encoding="utf-8") as f:
        f.write(readme_content)
    
    print("✓ 已生成 macOS 使用说明文件")

if __name__ == "__main__":
    print("=" * 50)
    print("Telegram 群发软件 - macOS 打包工具")
    print("=" * 50)
    
    if not check_pyinstaller():
        sys.exit(1)
    
    if build_macos():
        print("\n🎉 打包完成！")
        print("可执行文件位置: dist/Telegram群发软件")
        print("使用说明: macOS使用说明.txt")
    else:
        print("\n❌ 打包失败！")
        sys.exit(1) 